package com.pb.infra.oth.util;

import lombok.extern.slf4j.Slf4j;

/**
 * Base64算法类
 *
 * @author 金洋
 * @date 2018年1月18日
 */
@Slf4j
public class Base64 {
    /**
     * base64加密器
     */
    private java.util.Base64.Encoder baseEncode;

    /**
     * base64解密器
     */
    private java.util.Base64.Decoder baseDecode;

    /**
     * 构造函数
     */
    public Base64() {
        this.baseEncode = java.util.Base64.getEncoder();
        this.baseDecode = java.util.Base64.getDecoder();
    }

    /**
     * 带参数构造函数
     *
     * @param baseEncode
     * @param baseDecode
     */
    public Base64(java.util.Base64.Encoder baseEncode, java.util.Base64.Decoder baseDecode) {
        this.baseEncode = baseEncode;
        this.baseDecode = baseDecode;
    }

    /**
     * 进行base64编码
     *
     * @param password
     * @return
     */
    public String getBase64Encode(String password) {
        if (null == password || "".equals(password)) {
            return null;
        }
        return baseEncode.encodeToString(password.getBytes());
    }

    /**
     * 进行base64解码
     *
     * @param code
     * @return
     */
    public String getFromBase64(String code) {
        if (null == code || "".equals(code)) {
            return null;
        }
        try {
            byte[] byt = baseDecode.decode(code);
            return new String(byt);
        } catch (Exception e) {
            log.error("执行失败", e);
        }
        return null;
    }
    /**
     * 进行base64编码
     *
     * @param bytes
     * @return
     */
    public String encode(byte[] bytes) {
        return baseEncode.encodeToString(bytes);
    }
}
